﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aeroporto.modelo;
using Aeroporto.bd;
using System.Data;
using System.Collections;
using System.Windows.Forms;
namespace Aeroporto.controle
{
    class AeroportoControl
    {
        private AeroportoDAO bd_aeroporto = new AeroportoDAO();

        public DataTable lista_dados(string tabela)
        {
            DataTable datatable = new DataTable();

            try
            {
                datatable = bd_aeroporto.lista_dados(tabela);

            }catch(Exception e){
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }

        public DataTable pesquisar_nome_cidade(string nome)
        {
            DataTable datatable = new DataTable();
            try
            {
                datatable = bd_aeroporto.pesquisar_nome_cidade(nome);

            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }
        
        public DataTable pesquisar_nome(string nome)
        {
            DataTable datatable = new DataTable();
            try
            {
                datatable = bd_aeroporto.pesquisar("aeroporto", "nome", nome);

            }
            catch (Exception e)
            {
                Arquivo.escrever(e.ToString());
            }
            return datatable;
        }


        public MyMessageBox valida_aeroporto(string cod_iata,string cod_icao,string nome,string cidade,string pais)
        {
            if (cod_iata == "" || cod_icao == "" || nome == "" || cidade == "" || pais == "")
            {
                return new MyMessageBox("Preencha todos os campos!", "Campo em branco");
            }
            else
            {
                if (bd_aeroporto.existe_registro("aeroporto", "cod_iata", cod_iata) == true)
                {
                    return new MyMessageBox("Registro já existe", "Aeroporto ja cadastrado");
                }
                else
                {
                    return null;
                }
            }
        }

        public MyMessageBox valida_insert_aeroporto(string te_cod_iata,string te_cod_icao,string te_nome,string te_cidade,string te_pais){
            MyMessageBox mb = valida_aeroporto(te_cod_iata,te_cod_icao,te_nome,te_cidade,te_pais);

            if (mb != null)
            {
                return mb;
            }
            else
            {
                string cod_iata = te_cod_iata;
                string cod_icao = te_cod_icao;
                string nome = te_nome;
                string cidade = te_cidade;
                string pais = te_pais;

                IGenericModel generic_model = new AeroportoModel(cod_iata,cod_icao,nome,cidade,pais);

                if (bd_aeroporto.gravar_dados(generic_model))
                {

                    mb = new MyMessageBox("Aeroporto cadastrado!", "Cadastrado");
                }
                else
                {
                    mb = new MyMessageBox("Erro no cadastro","Erro");
                }
                return mb;
            }
        }


        public MyMessageBox exclui_aeroporto(ArrayList cod_iatas)
        {
            return bd_aeroporto.excluir("aeroporto","cod_iata",cod_iatas);
        }


        public MyMessageBox valida_update_aeroporto(string te_cod_iata, string te_cod_icao, string te_nome, string te_cidade, string te_pais,string te_cod_iataAntiga)
        {
            if (te_cod_iata == "" || te_cod_icao == "" || te_nome == "" || te_cidade == "" || te_pais == "")
            {
                return new MyMessageBox("Preencha todos os campos!", "Campo em branco");
            }
            else
            {
                if(te_cod_iataAntiga != te_cod_iata){
                    return new MyMessageBox("O codigo não pode ser alterado!","Erro"); 
                }

                AeroportoModel aeroporto = new AeroportoModel(te_cod_iata,te_cod_icao,te_nome,te_cidade,te_pais);

                if (bd_aeroporto.update_dados(aeroporto))
                {
                    return new MyMessageBox("Aeroporto atualizado!", "Aeroporto");
                }
                else
                {
                    return new MyMessageBox("Erro ao atualizar","Erro");
                }
            }
        }
    }
}
